#ifndef ___fat32_operacionAZ_buscar_posicion_para_entradas_directorio

#define ___fat32_operacionAZ_buscar_posicion_para_entradas_directorio 1

#include "f32_mto.c"

struct fat32opAZ_datos_busqueda {
  char * directorio;
  unsigned long cantEntradas;
  unsigned char entradasSolicitadas;
};

unsigned char fat32op_buscar_posicion_para_entradas_directorio(FAT32_PARAMS_OPERACION);

unsigned char fat32op_buscar_posicion_para_entradas_directorio (FAT32_PARAMS_OPERACION) {
  unsigned int posicion;
  unsigned int cantidadEntradas = 0;
  fat32opAZ_datos_busqueda * datos = datosEntrada;
  unsigned int posicionInicio;
  unsigned int * resultado = malloc(sizeof(unsigned int));
  unsigned char estado;
  for (posicion = 0; posicion < (datos -> cantidadEntradas); posicion ++) {
    char tipo = (datos -> directorio)[32 * posicion];
    if (tipo && (tipo != 229)) {
      cantidadEntradas = 0;
      continue;
    }
    if (!cantidadEntradas) {
      posicionInicio = posicion;
      cantidadEntradas = tipo ? 1 : ((datos -> cantidadEntradas) - posicion);
    }
    if (!tipo) break;
    if (cantidadEntradas >= (datos -> entradasSolicitadas)) break;
  }
  if (cantidadEntradas >= (datos -> entradasSolicitadas)) {
    *resultado = posicionInicio;
    estado = 1;
  } else {
    *resultado = cantidadEntradas;
    estado = 2;
  }
  *datosSalida = resultado;
  return estado;
}

#endif